#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPaintEvent>

#include "wayPoint.h"//我们一般引用系统内文件时，用<>,引用我们自己定义的文件时用""
 #include <TowerPosition.h>
//类外添加
#include <QMouseEvent>

#include "tower.h"
//类外
#include "enemy.h"
class Enemy;

//类内

class Tower;

//类内添加

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class wayPoint;//新增对wayPoint类的说明

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    void addWayPoint1();//用来添加航点的函数

protected:
    void paintEvent(QPaintEvent*);//画家类函数

private:
    Ui::MainWindow *ui;
    QList<wayPoint * > m_wayPointList;//用来储存航点的list
    //类外


    //类内
    public:
    void loadTowerPosition1();//用来加载防御塔坑的函数
    private:
    QList<TowerPosition > m_towerPositionList;//用来储存防御塔坑的list
protected:
    void mousePressEvent(QMouseEvent *);//鼠标点击类函数

private:
    QList<Tower *> m_towerList;//用来储存防御塔的list
public:
        void getHpDamaged();//敌人进入基地内部，基地要扣血
        void awardGlod();//敌人死亡，奖励金钱
        void removeEnemy(Enemy * enemy);//敌人死亡，在mainwindow中要移除
        QList<Enemy *> getEnemyList();//得到Enemy*的list

    private:
        QList<Enemy *> m_enemyList;//用来储存敌人的list
        int m_playerHp;//基地的血量
        int m_playerGlod;//初始金钱
public:
            bool loadWaves();//加载敌人的函数

        private:
            int m_waves;//波数
            bool m_gameWin;
            bool m_gameLose;

        private slots:
            //私有信号槽，将Enemy，Tower和后续的Bullet连接
            void updateMap();
            void gameStart();
};
#endif // MAINWINDOW_H
